home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / lang / SmallEiffel.lha / SmallEiffel / lib_std / double_ref.e < prev    next >
Text File  |  1998-12-22  |  3KB  |  117 lines

  1. -- This file is  free  software, which  comes  along  with  SmallEiffel. This
  2. -- software  is  distributed  in the hope that it will be useful, but WITHOUT 
  3. -- ANY  WARRANTY;  without  even  the  implied warranty of MERCHANTABILITY or
  4. -- FITNESS  FOR A PARTICULAR PURPOSE. You can modify it as you want, provided
  5. -- this header is kept unaltered, and a notification of the changes is added.
  6. -- You  are  allowed  to  redistribute  it and sell it, alone or as a part of 
  7. -- another product.
  8. --          Copyright (C) 1994-98 LORIA - UHP - CRIN - INRIA - FRANCE
  9. --            Dominique COLNET and Suzanne COLLIN - colnet@loria.fr 
  10. --                       http://www.loria.fr/SmallEiffel
  11. --
  12. class DOUBLE_REF
  13.  
  14. inherit
  15.    HASHABLE;
  16.    NUMERIC
  17.       undefine out_in_tagged_out_memory, fill_tagged_out_memory
  18.       redefine
  19.      infix "^", prefix "+", prefix "-"
  20.       end;
  21.    COMPARABLE
  22.       redefine
  23.      compare, out_in_tagged_out_memory, fill_tagged_out_memory
  24.       end;
  25.  
  26. creation make
  27.  
  28. feature 
  29.  
  30.    item: DOUBLE;
  31.  
  32.    make(value: DOUBLE) is
  33.       do
  34.      item := value
  35.       end;
  36.    
  37. feature
  38.    
  39.    set_item(value: like item) is
  40.       do
  41.      item := value;
  42.       end;
  43.  
  44.    infix "+" (other: like Current): like Current is
  45.       do
  46.      !!Result.make (item + other.item)
  47.       end;
  48.  
  49.    infix "-" (other: like Current): like Current is
  50.       do
  51.      !!Result.make (item - other.item);
  52.       end;
  53.  
  54.    infix "*" (other: like Current): like Current is
  55.       do
  56.      !!Result.make (item * other.item)
  57.       end;
  58.  
  59.    infix "/" (other: like Current): like Current is
  60.       do
  61.      !!Result.make (item / other.item)
  62.       end;
  63.  
  64.    infix "^" (exp: INTEGER): like Current is
  65.       do
  66.      !!Result.make (item ^ exp)
  67.       end;
  68.  
  69.    prefix "+" : like Current is
  70.       do
  71.      !!Result.make (item)
  72.       end;
  73.  
  74.    prefix "-" : like Current is
  75.       do
  76.      !!Result.make (-item);
  77.       end;
  78.  
  79.    infix "<" (other: like Current): BOOLEAN is
  80.       do
  81.      Result := item < other.item
  82.       end;
  83.  
  84.    compare (other: like Current): INTEGER is
  85.       do
  86.      Result := item.compare (other.item)
  87.       end;
  88.  
  89.    divisible (other: like Current): BOOLEAN is
  90.       do
  91.      Result := (other.item /= 0.0)
  92.       end;
  93.  
  94.    one: like Current is
  95.       do
  96.      !!Result.make (1.0)
  97.       end;
  98.  
  99.    zero: like Current is
  100.       do
  101.      !!Result.make (0.0)
  102.       end;
  103.  
  104.    out_in_tagged_out_memory, fill_tagged_out_memory is
  105.       do
  106.      tagged_out_memory.append("item: "); 
  107.      item.fill_tagged_out_memory;
  108.       end;
  109.  
  110.    hash_code: INTEGER is
  111.       do
  112.      Result := item.hash_code;
  113.       end;
  114.  
  115. end -- DOUBLE_REF
  116.  
  117.